//引入express第三方模块
const express = require('express')
//引入body-parser中间件
const bodyParser = require('body-parser');
//引入自带path模块
const path = require('path');
//引用cookie-parser
const cookieParase = require('cookie-parser');
//引入session
const session = require('express-session');
//引入user路由
const userRouter = require('./routes/user.js');
//引入teacher路由
const teacherRouter = require('./routes/teacher.js')
//引入student路由
const studentRouter = require('./routes/student.js');
const cors=require('cors');
//创建web服务器
const app = express();
//设置端口
app.listen(8081, () => {
	console.log('服务器启动成功,浏览器打开:localhost:8081')
})
//使用cookie-parser
app.use(cookieParase());
app.use(session({
	secret: 'keyboard cat',// 用来对session id相关的cookie进行签名
	resave: false,// 是否每次都重新保存会话，建议false
	saveUninitialized: true, // 是否自动保存未初始化的会话，建议false
	name:'session_id',//在浏览器中生成cookie的名称key，默认是connect.sid
	cookie: {
    	maxAge: 12*60*60*1000 // 有效期，单位是毫秒 12小时
 	}
}))

//托管静态资源
app.use(express.static(path.join(__dirname, '/public')))

//使用body-parser中间件将所有post请求的数据解析为对象,放在路由前边
app.use(bodyParser.urlencoded({ //也可使用内置express.urlencoded
	limit: '50mb',
	extended: false //不使用第三方查询字符串模块，就会使用核心模块querystring
}));
app.use(bodyParser.json())

// 配置跨域
//app.all('*', function (req, res, next) {
 // //允许接收不同协议，不同端口的请求
  //res.header('Access-Control-Allow-Origin', 'http://localhost:8080/');
 // //不同方式（接收任意的请求方式，默认情况下只接收get和post）
  //res.header('Access-Control-Allow-Methods', '*');
 //   // 请求头  x-token
  //res.header("Access-Control-Allow-Headers", "*");
//res.header("Access-Control-Allow-Credentials",true);//允许cookie跨域,此时origin不能为*
  //next();
//});

// 安装: npm  i  -save  cors
// 在nodejs express项目的app.js中: 
//     var cors=require(“cors”); //先引入cors中间件
//     var app=express();
//     app.use(cors({ //添加允许跨域的客户端地址
//       origin:[ "http://127.0.0.1:5500",... ]
//     }))

const corsOptions = {
  origin: ['http://localhost:8080','http://localhost:8082','http://114.132.42.191:8082','http://114.132.42.191:80','http://www.xyxiang.cn','http://xyxiang.cn','http://www.xyxiang.cn:80','http://xyxiang.cn:80'],
  credentials: true,
  maxAge: '1728000'
  //这一项是为了跨域专门设置的
}
app.use(cors(corsOptions))


//挂载路由器到web服务器
app.use('/v1/users', userRouter)
app.use('/v1/students', studentRouter)
app.use('/v1/teachers', teacherRouter)



//错误处理中间件
app.use((err, req, res, next) => {
	//err接收到的路由中的错误
	console.log(err);
	//响应状态码 500
	res.status(500).send({
		code: 500,
		msg: err.sqlMessage
	})
})
